nums = [1,2,3]

def dfs(depth,path,res,nums):
    if depth==len(nums):
        res.append(path[:])
        return None
    #先递归为1的时候，取当前元素的情况
    path.append(nums[depth])
    dfs(depth+1,path,res,nums)
    path.pop()
    #递归不取当前元素的情况
    dfs(depth+1,path,res,nums)
def subsets(nums):
    res=[]   #存放结果的集合
    path=[]  #存放中间处理过程的集合
    dfs(0,path,res,nums)
    print(res)
subsets(nums)